#include "chooselevelscene.h"
#include <QMenuBar>
#include <QPainter>
#include <QDebug>
#include <QTimer>
#include <QLabel>
#include "mypushbutton.h"

ChooseLevelScene::ChooseLevelScene(QWidget *parent) : QMainWindow(parent)
{
    // 配置主场景
    // 设置固定大小
    setFixedSize(320, 588);
    // 设置图标
    setWindowIcon(QIcon(":/res/Coin0001.png"));
    // 设置标题
    setWindowTitle("翻金币选择关卡场景");

    // 使用代码创建菜单栏（主场景是使用的ui界面创建的）
    QMenuBar *bar = menuBar();
    setMenuBar(bar);

    // 创建开始菜单
    QMenu *startMenu = bar->addMenu("开始");
    // 创建退出 菜单项
    QAction *quitAction = startMenu->addAction("退出");
    // 点击退出按钮
    connect(quitAction, &QAction::triggered, [=]() {
        this->close();
    });

    // 返回按钮
    auto backBtn = new MyPushButton(":/res/BackButton.png", ":/res/BackButtonSelected.png");
    backBtn->setParent(this);
    backBtn->move(this->width() - backBtn->width(), this->height() - backBtn->height());

    // 点击返回
    connect(backBtn, &MyPushButton::clicked, [=]() {
        qDebug() << "点击了返回按钮";
        // 告诉主场景 我返回了，主场景监听ChooseLevelScene的返回按钮
        // 做个延时的返回
        QTimer::singleShot(500, this, [=]() {
            emit chooseSceneBack();
        });
    });

    // 创建选择关卡的按钮
    for (int i = 0; i < 20; ++i) {
        MyPushButton *menuBtn = new MyPushButton(":/res/LevelIcon.png");
        menuBtn->setParent(this);
        /*
         * 25和130是起始值，70是间距
         * 25和130是起始值，70是间距
         */
        menuBtn->move(25 + i % 4 * 70, 130 + i / 4 * 70);

        // 监听每个按钮的点击事件
        connect(menuBtn, &MyPushButton::clicked, [=]() {
            qDebug() << QString("您选择的是第 %1 关").arg(i + 1);
        });

        // menuBtn->setText(QString::number(i + 1)); // 效果不好

        // 用标签控件
        auto label = new QLabel;
        label->setParent(this);
        label->setFixedSize(menuBtn->width(), menuBtn->height());
        label->setText(QString::number(i + 1));
        label->move(25 + i % 4 * 70, 130 + i / 4 * 70);
        // 设置label上字的对齐方式, 水平居中和垂直居中
        label->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
    }
}

void ChooseLevelScene::paintEvent(QPaintEvent *event)
{
    // 背景
    QPainter painter(this);
    QPixmap pix;
    pix.load(":/res/OtherSceneBg.png");
    painter.drawPixmap(0, 0, this->width(), this->height(), pix);

    // 画背景上图标
    pix.load(":/res/Title.png");
    painter.drawPixmap((width() - pix.width()) * 0.5, 30, pix);
}
